課程名稱 |
程式語言 Programming Languages |
開課學期 |
99-2 |
授課對象 |
管理學院 資訊管理學系 |
授課教師 |
穆信成 |
課號 |
IM3002 |
課程識別碼 |
705 20100 |
班次 |
|
學分 |
3 |
全/半年 |
半年 |
必/選修 |
必修 |
上課時間 |
星期三6,7,8(13:20~16:20) |
上課地點 |
管一B01 |
備註 |
本課程中文授課,使用英文教科書。 總人數上限:70人 |
|
|
課程簡介影片 |
|
核心能力關聯 |
核心能力與課程規劃關聯圖 |
課程大綱
|
為確保您我的權利,請尊重智慧財產權及不得非法影印
|
課程概述 |
- 程式語言是一種形式語言,作為思考的工具。我們用程式語言表達概念,也用程式語
言中的形式規則檢驗程式的正確性。領域不同、目的不同,適合的程式語言也不同。
一個語言如果不改變你的思考方式,就不值得學 (Alan Peris)。
- 只要定義出資料型態,很多程式都可用歸納法寫出。
- 好的型別系統常有只要型別對,程式就會對的特性。
- 型別系統與邏輯有密切關係。計算科學的發展也和數學/邏輯學界的潮流息息相關。
- 有良好性質的語言可用數學推衍確保正確性,甚至可以從 specification 把
程式「算」出來。
- 許多程式語言的特性,如傳值方式、變數範疇、lazy/eager evaluation 等等
的「意義」(語意)都可用數學方式描述。
- 如 C 之類的 imperative 語言之程式的正確性也可以證明。寫一個 imperative
程式的關鍵是迴圈不變量。
|
課程目標 |
瞭解程式語言在語法、語意、與實務面向的課題。熟悉數種程式設計典範,
作為日後輔助思維與規劃的公據。 |
課程要求 |
已修過一門程式設計課程
|
預期每週課後學習時數 |
|
Office Hours |
|
指定閱讀 |
Programming Languages: Application and Interpretation, by
Shriram Krishnamurthi.
Freely available online at:
http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/
|
參考書目 |
Programming in Haskell, by Graham Hutton.
Cambridge University Press, 2007
Introduction to Functional Programming using Haskell (2nd Edition), by Richard Bird.
Prentice Hall 1998
|
評量方式 (僅供參考) |
No. |
項目 |
百分比 |
說明 |
1. |
期中考 |
50% |
|
2. |
期末考 |
50% |
|
|
週次 |
日期 |
單元主題 |
第1週 |
2/23 |
Introduction
|
第2週 |
3/02 |
Haskell/Helium: functions,
inductive definitions on lists,
finite and infinite lists.
|
第3週 |
3/09 |
Haskell/Helium: equational reasoning
polymorphic type system, |
第4週 |
3/16 |
Haskell/Helium: algebraic datatype
|
第5週 |
3/23 |
Interpreter/Semantics:
a simple language with expressions,
extended with variables,
extended with "let".
|
第6週 |
3/30 |
Interpreter/Semantics:
a language with functions
lexical scope vs dynamic scope, closure.
a language with more datatypes,
lazy vs eager evaluation.
|
第7週 |
4/06 |
Interpreter/Semantics:
a language with states.
|
第8週 |
4/13 |
Logic and Computability
|
第9週 |
4/20 |
Mid-Term Exam
|
第10週 |
4/27 |
IO and Concurrency in Haskell
|
第11週 |
5/04 |
Imperative programming and Hoare logic:
Hoare logic, backwards reasoning
Loop construction
|
第12週 |
5/11 |
Imperative programming and Hoare logic:
Basic predicate calculus, and its application
|
第13週 |
5/18 |
Imperative programming and Hoare logic:
More Examples on Loop Construction
|
第14週 |
5/25 |
Objects and Object Orientation
|
第15週 |
6/01 |
Concurrency: process algebras
|
第16週 |
6/08 |
Logic programming
|
第17週 |
6/15 |
Advanced Topics
|
第18週 |
6/22 |
Final Exam
|
|